package models

// 各种返回值结果

// 普通查询结果
type ResultCommon[T User | Role | Menu | CodeResult | LoginResult | string | []User | []Role | []Menu | []UserSelect | Department | []Department] struct {
	Msg    string `json:"msg"`
	Code   string `json:"code"`
	Result T      `json:"result"`
}

// 分页查询结果
type ResultByPage[T User | Role | Menu | UserSelect | Department | File] struct {
	Msg      string `json:"msg"`
	Code     string `json:"code"`
	Page     int    `json:"page"`
	PageSize int    `json:"pageSize"`
	Total    int64  `json:"total"`
	Result   []T    `json:"result"`
}

// 失败返回结果
type ErrorResult struct {
	Msg    string `json:"msg"`
	Code   string `json:"code"`
	Result error  `json:"result"`
}

// 插入成功返回值
type AddResult struct {
	Msg    string `json:"msg"`
	Code   string `json:"code"`
	Result int64  `json:"result"`
}

// 更新成功返回值
type UpdateResult[T User | Role | Menu | Department | File] struct {
	Msg    string `json:"msg"`
	Code   string `json:"code"`
	Result T      `json:"result"`
}

// 删除成功返回值
type DeleteResult struct {
	Msg    string `json:"msg"`
	Code   string `json:"code"`
	Result []int  `json:"result"`
}

// 身份校验失败返回值
type CheckResult struct {
	Msg    string `json:"msg"`
	Code   string `json:"code"`
	Result string `json:"result"`
}

// 生成验证码成功
type CodeResult struct {
	Id   string `json:"id"`
	Data string `json:"data"`
}

// 登陆成功返回参数
type LoginResult struct {
	Token    string `json:"token"`
	UserInfo User   `json:"userinfo"`
}
